如果有曾經使用自己的電腦操控遠端電腦的經驗,應該對SSH這個東西不太陌生
SSH(secure shell)安全協定可以提供一個安全的連線方式,他創造兩人可以安全溝通的管道
利用一大堆的加密手法進行雙方身份認證,確保第三方無法從中發動攻擊
由於SSH有用到前面講過的Diffie-Hellman、雜湊函數、公鑰加密,建議各位可以複習他們的性質,再回來認識這個安全協定
我們先來談談 電子證書(digital certificate)這個東西,他可以幫助我們檢查某個人有沒有拿到私鑰
就跟一般的證照一樣,需要有一個公正的第三方來發證一樣,電子證書也需要找來一個公正的第三方
這個第三方可以安全地生成公鑰私鑰給使用者,此私鑰只有使用者知道,公鑰則是發布的公開資訊
一個一般的電子證書包含用戶名稱、用戶被分配的公鑰,這兩則資訊將會分配到的私鑰上鎖
這兩個資訊加上上鎖的文件一起就是電子證書
例如Alice的電子證書有
M = ("Alice", Alice的公鑰)、S = Alice私鑰加密的[M]
想要驗證此證書,Bob可以用公鑰計算{S}並檢查他是否與M一致
此證書的安全性就建立在Bob可以完全信任這個第三方機構,有生成足夠安全的私鑰,並安全地讓Alice知道
假如這個第三方機構不可靠,那Alice的證書就跟廢紙一樣
要記住 傳送電子證書的目的是用來確認傳送方有拿到私鑰
例如Bob在收到Alice的電子證書並使用其公鑰驗證確認無誤後,Bob頂多只能確定Alice有拿到私鑰
無法確定該電子證書真的是從Alice手上寄過來
要保證傳送的人真的是Alice,還得多做一些事情才能驗證
第一步,Alice首先說明自己是誰、並傳送加密的選項(要使用的加密演算法、密鑰長度等)、以及一個隨機的數字RA給Bob
第二步,Bob從Alice提供的加密選項中挑選想要的加密參數、以及一個隨機的數字RB
第三步,Alice送出她所計算出的DH值(注意到DH的g和p都是公開資訊,次方a只有Alice知道,最終兩者可以透過 進行訊息交換)
第四步,Bob在收到Alice的DH值後,他也一併生成自己的DH值
並計算
H = h(Alice, Bob, 加密選項, 選擇的加密參數, RA, RB, , , )
H為兩人之間對話一切資訊的雜湊值
最後用Bob自己的私鑰將H給加密變成SB
Bob送出他的DH值、他的電子證書、以及SB
這裡送出電子證書的目的是要確認Bob本人有收到私鑰,SB也是透過該私鑰進行加密
由於SB需要Bob的私鑰方能生成,Alice在這一步便可認證Bob的身份
第五步
Alice在收到Bob的DH值後,也可以計算出H,並且將(H, Alice, Alice的電子證書)用Alice的私鑰加密形成SA
連同Alice、Alice的電子證書、SA,利用Bob選擇的加密演算法用密鑰
來進行加密,傳送給Bob
由於Bob也知道K是多少,因此在解密之後檢查SA即可完成Alice的認證
可以看到以上複雜的一來一回中,Alice和Bob就已經完成相互的認證,彼此都確認對方擁有只有他們能知道的知識
Trudy無法假裝自己是Bob,因為他沒有辦法取得代表Bob的私鑰,因此無法產SB;同理他也無法假裝自己是Alice
而且因為DH的特性,Trudy也無法透過從中攔截算出密鑰K
實際上大多的ssh是用密碼進行驗證而非電子證書,不過概念大同小異
ssh在一般電腦上的操作如下,其指令要求輸入ssh {user}@{host}
,user就是你想要遠端控制的使用者名稱,host是遠端的IP位置
他會叫你輸入密碼,輸入完成後,便可遠端連線電腦
很開心可以完成這30天的挑戰🥹
希望看完我這一系列的人可以或多或少學到一些資訊安全理論方面的知識